﻿using System;
using personalplaner.business.enums;

namespace personalplaner.business.stamm
{
    public class DienstZeit : ItemBase
    {
        int _dienstZeitId;
        public int DienstZeitId
        {
            get { return _dienstZeitId; }
            set
            {
                _dienstZeitId = value;
                RaisePropertyChanged("DienstZeitId");
            }
        }

        int _dienstId;
        public int DienstId
        {
            get { return _dienstId; }
            set
            {
                _dienstId = value;
                RaisePropertyChanged("DienstId");
            }
        }

        string _von;
        public string Von
        {
            get { return _von; }
            set
            {
                _von = value;
                RaisePropertyChanged("Von");
                RaisePropertyChanged("Zeit");
            }
        }

        string _bis;
        public string Bis
        {
            get { return _bis; }
            set
            {
                _bis = value;
                RaisePropertyChanged("Bis");
                RaisePropertyChanged("Zeit");
            }
        }

        enZeiteinheit _zeitEinheitTyp;
        public enZeiteinheit ZeitEinheitTyp
        {
            get { return _zeitEinheitTyp; }
            set
            {
                _zeitEinheitTyp = value;
                RaisePropertyChanged("ZeitEinheitTyp");
            }
        }

        DateTime _datumVon;
        public DateTime DatumVon
        {
            get { return _datumVon; }
            set
            {
                _datumVon = value;
                RaisePropertyChanged("DatumVon");
            }
        }

        DateTime _datumBis;
        public DateTime DatumBis
        {
            get { return _datumBis; }
            set
            {
                _datumBis = value;
                RaisePropertyChanged("DatumBis");
            }
        }

        bool _isAbteilungsZeit;
        public bool IsAbteilungsZeit
        {
            get { return _isAbteilungsZeit; }
            set
            {
                _isAbteilungsZeit = value;
                RaisePropertyChanged("IsAbteilungsZeit");
            }
        }

        public double Zeit
        {
            get
            {
                if (string.IsNullOrEmpty(Von) || string.IsNullOrEmpty(Bis))
                    return 0.0;

                int hVon;
                int mVon;
                int hBis;
                int mBis;

                var arrVon = Von.Split(':');
                if (arrVon.Length < 2)
                    return 0.0;

                int.TryParse(arrVon[0], out hVon);
                int.TryParse(arrVon[1], out mVon);

                var arrBis = Bis.Split(':');
                if (arrBis.Length < 2)
                    return 0.0;

                int.TryParse(arrBis[0], out hBis);
                int.TryParse(arrBis[1], out mBis);

                double von = ((double)hVon) + ((double)mVon / 60);
                double bis = ((double)hBis) + ((double)mBis / 60);
                if (von < bis)
                    return Math.Round(bis - von, 2);
                return Math.Round(von - bis, 2);
            }
        }
    }
}
